﻿using Microsoft.Win32;
using Sport_Orders.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Sport_Orders.Program.Pages
{
    /// <summary>
    /// Логика взаимодействия для AddEditTovar.xaml
    /// </summary>
    public partial class AddEditTovar : Page
    {
        string loginUser;                   // переданный логин
        bool IsEdit = false;                // проверка на редактирование
        private Tovar tovar = new Tovar();  // экземпляр класса товара

        public AddEditTovar(Tovar selectTovar, string loginUser)
        {
            InitializeComponent();

            // Передача логина для возврата на страницу View
            this.loginUser = loginUser;

            // Если не пустой то передаем в экземпляр класса товара
            if (selectTovar != null)
            {
                tovar = selectTovar;
                IsEdit = true;
            }
            DataContext = tovar;
        }

        // Выбор фото
        private void BtnChoosePhoto_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            if (ofd.ShowDialog() == true && !string.IsNullOrWhiteSpace(ofd.FileName))
            {
                TxbPhoto.Text = ofd.FileName;
                TxbPhoto.Focus();
            }
        }

        // Вернуться на пред. страницу
        private void BtnBack_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new View(this.loginUser));
            IsEdit = false;
        }

        // Сохранить товар
        private void BtnSaveTovar_Click(object sender, RoutedEventArgs e)
        {
            // Проверка на ошибки
            StringBuilder error = new StringBuilder();
            if (string.IsNullOrWhiteSpace(tovar.nameTovar))
                error.AppendLine("* Должно быть указано название товара");
            if (string.IsNullOrEmpty(tovar.vendor))
                error.AppendLine("* Должен быть указан производитель");
            if (IsEdit == false)
            {
                foreach (var record in Entities.GetContext().Tovar)
                {
                    if (record.nameTovar == tovar.nameTovar &&
                        record.vendor == tovar.vendor)
                        error.AppendLine("* Такой товар с производителем уже существует");
                }
            }
            if (string.IsNullOrWhiteSpace(tovar.price.ToString()) || tovar.price == 0)
                error.AppendLine("* Должна быть указана цена");
            if (string.IsNullOrWhiteSpace(tovar.countTovar.ToString()) || tovar.countTovar == 0)
                error.AppendLine("* Должно быть указано количество");

            // Показать ошибки, если они есть
            if (error.Length > 0)
            {
                MessageBox.Show($"{error}", "Ошибка",
                                MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            // Добавить новую запись, если ID == 0
            if (tovar.ID_tovar == 0)
                Entities.GetContext().Tovar.Add(tovar);

            // Сохранение
            try
            {
                Entities.GetContext().SaveChanges();
                MessageBox.Show("Данные сохранены", "Успех",
                                MessageBoxButton.OK, MessageBoxImage.Information);
                NavigationService.Navigate(new View(this.loginUser));
            } catch (Exception ex)
            { MessageBox.Show($"{ex.Message}", "Ошибка", MessageBoxButton.OK, 
                              MessageBoxImage.Error); }

        }
    }
}
